package karaoke.negocio;

import java.util.Collection;

import karaoke.dao.ReservaDAO;
import karaoke.excepcion.DAOExcepcion;
import karaoke.modelo.Cliente;
import karaoke.modelo.Reserva;
import karaoke.modelo.Sala;

public class GestionReserva {
	
	public Collection<Reserva> buscarPorId(int idreserva)
			throws DAOExcepcion {
		ReservaDAO dao = new ReservaDAO();
		return dao.listar();
	}

	public Reserva insertar(String fecha, String hora, String descripcion, boolean elog)
			throws DAOExcepcion {
		ReservaDAO dao = new ReservaDAO();
		
		Reserva vo = new Reserva();
		vo.setFecha(fecha);
		vo.setHora(hora);
		vo.setDescripcion(descripcion);
		return dao.insertar(vo);
	}
	
	public Reserva obtener(int idreserva) throws DAOExcepcion {
		ReservaDAO dao = new ReservaDAO();
		return dao.obtener(idreserva);
	}

	public void eliminar(int idReserva) throws DAOExcepcion {
		ReservaDAO dao = new ReservaDAO();
		dao.eliminar(idReserva);
	}

	public Reserva actualizar(int idreserva, String fecha, String hora, String descripcion) throws DAOExcepcion {
		ReservaDAO dao = new ReservaDAO();

		Reserva vo = new Reserva();
		vo.setIdreserva(idreserva);
		vo.setFecha(fecha);
		vo.setHora(hora);
		vo.setDescripcion(descripcion);
		
		return dao.actualizar(vo);
	}

	public Collection<Reserva> listar() throws DAOExcepcion {
		ReservaDAO dao = new ReservaDAO();
		return dao.listar();
	}

	public Reserva registrarReservaCliente(Sala sala, String fecha,
			String hora, int nrohoras, String descripcion, Cliente c) throws DAOExcepcion{
		ReservaDAO dao = new ReservaDAO();
		
		Reserva r = new Reserva();
		r.setSala(sala);
		r.setFecha(fecha+" "+hora);
		r.setHora(hora);
		r.setNrohoras(nrohoras);
		r.setDescripcion(descripcion);
		r.setCliente(c);
		return dao.insertarReservaCli(r);
	}

	public Collection<Reserva> listByCodNomSalaReservaByIdCliente(int idcliente, String idsala, String finding)
			throws DAOExcepcion {
		ReservaDAO dao = new ReservaDAO();
		return dao.listaReservasPorIdClienteYBusqueda(idcliente, idsala, finding);
	}
}
